/************************************************************************
                        Conversion.h - Copyright Claudio Botta

This library is free software; you can redistribute it and/or modify it 
under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation; either version 2.1 of the License, or 
(at your option) any later version.
This library is distributed in the hope that it will be useful, but 
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 
or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public 
License for more details.

You should have received a copy of the GNU Lesser General Public License 
along with this library; if not, write to the 
Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, 
Boston, MA 02110, USA

This file was generated on Sat Mar 15 2008 at 10:58:11
The original location of this file is geomagick/Conversion.h
**************************************************************************/


#ifndef CONVERSION_H
#define CONVERSION_H

#include <string>
#include <vector>
#include "BaseTypes/BaseType.h"


using namespace std;
namespace geomagick
{

class Conversion;

struct ConversionId{
	 Conversion* (*init)();
	 string (*getConversionName)();
	 int (*getEdgeWeight)();
	 BaseTypeId* (*getSourceId)();
	 BaseTypeId* (*getTargetId)();
};


/**
  * class Conversion
  */

class Conversion
{
public:

  // Constructors/Destructors
  //  


  // Static Public attributes
  //  

  // Public attributes
  //  


  // Public attribute accessor methods
  //  


  // Public attribute accessor methods
  //  


protected:

  // Static Protected attributes
  //  

  // Protected attributes
  //  

public:


  // Protected attribute accessor methods
  //  

protected:

public:


  // Protected attribute accessor methods
  //  

protected:


private:

  // Static Private attributes
  //  

  // Private attributes
  //  



public:

  // Private attribute accessor methods
  //  

private:

public:


  // Private attribute accessor methods
  //  

virtual BaseType* process(BaseType* in)
	{
	 return in;
	}

virtual void test()
	{
	cout << "failed \n";
	}

 
   static Conversion* init(){return (new Conversion);}
   static string getConversionName(){return "Conversion";}
   static int getEdgeWeight(){return 1;}
   static ConversionId* getTypeId(){ConversionId* newConversionId = new ConversionId; 
					newConversionId->getSourceId = BaseType::getTypeId;
					newConversionId->getTargetId = BaseType::getTypeId;
					newConversionId->getEdgeWeight = Conversion::getEdgeWeight;
					newConversionId->getConversionName = Conversion::getConversionName;
					newConversionId->init = Conversion::init; 
					return newConversionId;}

private:

};
}
#endif // CONVERSION_H
